#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QImage>
#include <QDebug>
#include <QtMath>

#include "opencv2/opencv.hpp"
using namespace cv;

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void updateQLabelImage();

    Mat QImage2Mat(QImage &img);
    QImage Mat2QImage(Mat &img);

    /**
     * @brief hDLL_gradientAuto 梯度矫正
     * @param src  输入图像
     * @param dst  输出图像
     * @param flag 方向,[0(左),1(上),2(右),3(下)]
     * @param val  矫正度数,像素,[10 ~ 100]
     * @return 0(成功)，-1(失败)
     */
    int hDLL_gradientAuto(Mat &src, Mat &dst, int flag, int val);

public slots:
    void horChange(int index);
    void verChange(int index);

private:
    Ui::MainWindow *ui;

    QImage m_img;       // 原图
    QImage m_img_dst;   // 处理过的图像
};
#endif // MAINWINDOW_H
